/**
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.ut.biolab.medsavant.client.view.util;
import java.awt.Toolkit;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
/**
* A Document filter to limit the size of textfields (e.g. JTextField).
* Usage:
* ((AbstractDocument)somecomponent.getDocument()).setDocumentFilter(
* new FixedLengthTextFilter(20));
*
* Based on code at
* http://www.coderanch.com/t/434129/GUI/java/Reg-Validatin-JTextFields
*
* @author jim
*/
public class FixedLengthTextFilter extends DocumentFilter{
private int maxLength;
public FixedLengthTextFilter(int maxLength){
this.maxLength = maxLength;
}
public void insertString(DocumentFilter.FilterBypass filtby, int ofs,
String text, AttributeSet attrSet) throws BadLocationException{
if(filtby.getDocument().getLength() + text.length() <= maxLength){
filtby.insertString(ofs, text, attrSet);
}else{
Toolkit.getDefaultToolkit().beep();
}
}
public void replace(DocumentFilter.FilterBypass filtby, int ofs, int length,
String text, AttributeSet attr) throws BadLocationException{
if(filtby.getDocument().getLength() + text.length() - length
<= maxLength){
filtby.replace(ofs, length, text, attr);
}else{
Toolkit.getDefaultToolkit().beep();
}
}
}